#pragma once

//From shlobj.h //including shlobj.h will cause a conflit with the following definition of IExtractIcon
// GetIconLocation() return flags

#define GIL_SIMULATEDOC  0x0001      // simulate this document icon for this
#define GIL_PERINSTANCE  0x0002      // icons from this class are per instance (each file has its own)
#define GIL_PERCLASS     0x0004      // icons from this class per class (shared for all files of this type)
#define GIL_NOTFILENAME  0x0008      // location is not a filename, must call ::ExtractIcon
#define GIL_DONTCACHE    0x0010      // this icon should not be cached

//Defining IExtractIcon here locally since I could not find it in any of the IDL files supplied by VS2005
//It's supposed to be in shobjidl.idl according to Linux/Wine sources but I couldn't find it in the shobjidl.idl
//file supplied with VS2005.
[
	object,
	uuid(000214fa-0000-0000-c000-000000000046),
	pointer_default(unique),
	local
]
__interface IExtractIcon
{
	HRESULT STDMETHODCALLTYPE GetIconLocation(
		[in] UINT uFlags,
		[out, size_is(cchMax)] LPWSTR szIconFile,
		[in] UINT cchMax,
		[out] INT *piIndex,
		[out] UINT *pwFlags);

	HRESULT STDMETHODCALLTYPE Extract(
		[in] LPCWSTR pszFile,
		[in] UINT nIconIndex,
		[out] HICON *phiconLarge,
		[out] HICON *phiconSmall,
		[in] UINT nIconSize );
};


[
	object,
	uuid(49F41067-90EC-490d-846C-6407C4A813E4),
	pointer_default(unique),
	local
]
__interface ISharpLauncher
{
	HRESULT STDMETHODCALLTYPE Launch(
		[in] BSTR filePath);

	HRESULT STDMETHODCALLTYPE IDELocated(
		[in] BSTR ideName,
		[out, retval] BOOL *retVal);
};

